package com.polymorphic.polyparameter;

/**
 * @Author 小闽
 * @Date 2024/8/13 18:07
 * @PackageName: com.polymorphic.polyparameter
 * @ClassName: PloyParameter
 * @Description: 多态参数
 * @Version 1.0
 */
public class PloyParameter {
    /**
     * 定义员工类Employee,包含姓名和月工资[private],以及计算年工资getAnnual的方法。
     * 普通员工和经理继承了员工，经理类多了奖金bonus属性和管理manage方法，普通员工类多了work方法，
     * 普通员工和经理类要求分别重写getAnnual方法
     * 测试类中添加一个方法showEmpAnnual(Employee e),实现获取任何员工对象的年工资，并在main方法中
     * 调用该方法[e.getAnnual()]
     * 测试类中添加一个方法，testWork，如果是普通员工，则调用work方法，如果是经理，则调用manage方法。
     */
    public static void main(String[] args) {
        Work tom = new Work("tom", 2000);
        Manage manage = new Manage("马云", 10000, 2000);
        PloyParameter ployParameter = new PloyParameter();
        ployParameter.showEmpAnnual(tom);
        ployParameter.showEmpAnnual(manage);
        ployParameter.testWork(tom);
        ployParameter.testWork(manage);

    }
    public void showEmpAnnual(Employee e){
        System.out.println(e.getAnnual());
    }
    public void testWork(Employee e){
        if(e instanceof Work){
            ((Work) e).work();
        }else if(e instanceof Manage){
            ((Manage) e).manage();
        }
    }
}
